<?php
/**
 * dziennik zdarzeń, utworzony został w celu wyłączenia wszelkich komunikatów debugowania z głównego biegu dokumentu
 * 
 * można tworzyć oraz nazywać swoje dzienniki, każdy ma swoją sekcję - dzięki temu wiadomo, co gdzie było uruchomione
 */
class Log {
	/**
	 * przechowalnia wszystkich dzienników
	 * @static
	 * @access private
	 */
	private static $allLogs = array();
	/**
	 * nagłówek danego dziennika
	 * @access private
	 */
	private $header = false;
	/**
	 * przechowalnia konkretnego dziennika
	 * @access private
	 */
	private $logs = array();
	/**
	 * konstruktor - tworzy nowy dziennik
	 * @param string $header (opcjonalny) nagłówek tworzonego dziennika
	 */
	public function __construct ($header = false) {
		if($header) {
			$this->setHeader($header);
		}
	}
	/**
	 * wyświetla wszystkie dzienniki
	 * @static
	 * @access public
	 */
	public static function displayAll () {
		$output = '<div id="debugLogs">';
		foreach(self::$allLogs as $header => $logArray) {
			$output .= '<ul>'.$header;
			$l = count($logArray);
			for($i=0; $i<$l; $i++) {
				$output .= '<li>'.$logArray[$i].'</li>';
			}
			$output .= '</ul>';
		}
		$output .= '</div>';
		return $output;
	}
	/**
	 * ustawia nagłówek dziennika
	 * @param string $header nowy nagłówek
	 */
	public function setHeader ($header) {
		if($this->header) {
			unset(self::$logs[$this->header]);
		}
		$this->header = (string)$header;
		self::$allLogs[$this->header] = &$this->logs;
	}
	/**
	 * dodaje nowy wpis do dziennika
	 * @param string $content treść wpisu
	 */
	public function add ($content) {
		$this->logs[] = (string)$content;
	}
}
?>